package com.middlegroup.subjectpay.service.impl;

import com.alipay.api.AlipayApiException;
import com.middlegroup.subjectpay.service.AlipayService;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author
 * @since 2019-08-07
 */
@Service
public class AlipayServiceImpl implements AlipayService {

    @Override
    public String createAlipay(String merchantBillNo, BigDecimal amount, String ip, String subject, String returnUrl, String state, String notifyUrl, String transCurrency) {
////        // 商户订单号，商户网站订单系统中唯一订单号，必填
////        String out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"),"UTF-8");
////        // 订单名称，必填
////        String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8");
////        // 付款金额，必填
////        String total_amount=new String(request.getParameter("WIDtotal_amount").getBytes("ISO-8859-1"),"UTF-8");
////        // 商品描述，可空
////        String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8");
////        // 超时时间 可空
//        String timeout_express="2m";
////        // 销售产品码 必填
//        String product_code="QUICK_WAP_WAY";
//        /**********************/
//        // SDK 公共请求类，包含公共请求参数，以及封装了签名与验签，开发者无需关注签名与验签
//        //调用RSA签名方式
//        AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE);
//        AlipayTradeWapPayRequest alipay_request=new AlipayTradeWapPayRequest();
//
//        // 封装请求支付信息
//        AlipayTradeWapPayModel model=new AlipayTradeWapPayModel();
//        model.setOutTradeNo(merchantBillNo);
//        model.setSubject(subject);
//        model.setTotalAmount(amount.toString());
//        model.setBody(subject);
//        model.setTimeoutExpress(timeout_express);
//        model.setProductCode(product_code);
//        alipay_request.setBizModel(model);
//        // 设置异步通知地址
//        alipay_request.setNotifyUrl(AlipayConfig.notify_url);
//        // 设置同步地址
//        alipay_request.setReturnUrl(AlipayConfig.return_url);
//
//        // form表单生产
//        String form = "";
//        try {
//            // 调用SDK生成表单
//            form = client.pageExecute(alipay_request).getBody();
////            response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
////            response.getWriter().write(form);//直接将完整的表单html输出到页面
////            response.getWriter().flush();
////            response.getWriter().close();
//        } catch (AlipayApiException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
        return null;
    }

    @Override
    public String refundAlipay(String merchantBillNo, String billNo, BigDecimal refundAmount, String remark, String notifyUrl, String refundCurrency, String outRequestNo) throws AlipayApiException {
        //商户订单号和支付宝交易号不能同时为空。 trade_no、  out_trade_no如果同时存在优先取trade_no
        //商户订单号，和支付宝交易号二选一
//        String out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"),"UTF-8");
//        //支付宝交易号，和商户订单号二选一
//        String trade_no = new String(request.getParameter("WIDtrade_no").getBytes("ISO-8859-1"),"UTF-8");
//        //退款金额，不能大于订单总金额
//        String refund_amount=new String(request.getParameter("WIDrefund_amount").getBytes("ISO-8859-1"),"UTF-8");
//        //退款的原因说明
//        String refund_reason=new String(request.getParameter("WIDrefund_reason").getBytes("ISO-8859-1"),"UTF-8");
//        //标识一次退款请求，同一笔交易多次退款需要保证唯一，如需部分退款，则此参数必传。
//        String  out_request_no=new String(request.getParameter("WIDout_request_no").getBytes("ISO-8859-1"),"UTF-8");
        /**********************/
//        // SDK 公共请求类，包含公共请求参数，以及封装了签名与验签，开发者无需关注签名与验签
//        AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE);
//        AlipayTradeRefundRequest alipay_request = new AlipayTradeRefundRequest();
//
//        AlipayTradeRefundModel model=new AlipayTradeRefundModel();
//        model.setOutTradeNo(merchantBillNo);
//        model.setTradeNo(billNo);
//        model.setRefundAmount(refundAmount.toString());
//        model.setRefundReason(remark);
//        model.setOutRequestNo(outRequestNo);
//        alipay_request.setBizModel(model);
//
//        AlipayTradeRefundResponse alipay_response =client.execute(alipay_request);
//        System.out.println(alipay_response.getBody());
        return null;
    }
}
